[INFO] cloning repository https://github.com/Marianne-J/Mastermind-RustVersion
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/Marianne-J/Mastermind-RustVersion" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FMarianne-J%2FMastermind-RustVersion", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FMarianne-J%2FMastermind-RustVersion'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 1998f45edc6e83f68ca7520eb4b5ac5a68180a2f
[INFO] checking Marianne-J/Mastermind-RustVersion against master#9610dfe5a9a731ced1ea4923ecbd0c57fe367898 for beta-170-4
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FMarianne-J%2FMastermind-RustVersion" "/workspace/builds/worker-6-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-6-tc1/source'...
[INFO] [stderr] done.
[INFO] validating manifest of git repo https://github.com/Marianne-J/Mastermind-RustVersion on toolchain 9610dfe5a9a731ced1ea4923ecbd0c57fe367898
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+9610dfe5a9a731ced1ea4923ecbd0c57fe367898" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] started tweaking git repo https://github.com/Marianne-J/Mastermind-RustVersion
[INFO] finished tweaking git repo https://github.com/Marianne-J/Mastermind-RustVersion
[INFO] tweaked toml for git repo https://github.com/Marianne-J/Mastermind-RustVersion written to /workspace/builds/worker-6-tc1/source/Cargo.toml
[INFO] crate git repo https://github.com/Marianne-J/Mastermind-RustVersion already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+9610dfe5a9a731ced1ea4923ecbd0c57fe367898" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:19e73879b68f455e41552ea35293514db52ea292d993f571636dbffedb77a1ee" "/opt/rustwide/cargo-home/bin/cargo" "+9610dfe5a9a731ced1ea4923ecbd0c57fe367898" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 881ca1cdab98fca66fb769c0c814805add0f054e870f5b9838d85dcf6b6b146e
[INFO] running `Command { std: "docker" "start" "-a" "881ca1cdab98fca66fb769c0c814805add0f054e870f5b9838d85dcf6b6b146e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "881ca1cdab98fca66fb769c0c814805add0f054e870f5b9838d85dcf6b6b146e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "881ca1cdab98fca66fb769c0c814805add0f054e870f5b9838d85dcf6b6b146e", kill_on_drop: false }`
[INFO] [stdout] 881ca1cdab98fca66fb769c0c814805add0f054e870f5b9838d85dcf6b6b146e
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:19e73879b68f455e41552ea35293514db52ea292d993f571636dbffedb77a1ee" "/opt/rustwide/cargo-home/bin/cargo" "+9610dfe5a9a731ced1ea4923ecbd0c57fe367898" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 230cce4767f00ad0a8dd5c87d1a3c938ee832b744859fdc700980d1c16d6955c
[INFO] running `Command { std: "docker" "start" "-a" "230cce4767f00ad0a8dd5c87d1a3c938ee832b744859fdc700980d1c16d6955c", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.126
[INFO] [stderr]     Checking cfg-if v1.0.0
[INFO] [stderr]     Checking ppv-lite86 v0.2.16
[INFO] [stderr]     Checking getrandom v0.2.7
[INFO] [stderr]     Checking rand_core v0.6.3
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]     Checking rand v0.8.5
[INFO] [stderr]     Checking Mastermind_Rust v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] error[E0507]: cannot move out of `*self` which is behind a shared reference
[INFO] [stdout]   --> game/master.rs:20:13
[INFO] [stdout]    |
[INFO] [stdout] 20 |             self.get_inputs();
[INFO] [stdout]    |             ^^^^^------------
[INFO] [stdout]    |             |    |
[INFO] [stdout]    |             |    `*self` moved due to this method call
[INFO] [stdout]    |             move occurs because `*self` has type `Master`, which does not implement the `Copy` trait
[INFO] [stdout]    |
[INFO] [stdout] note: `Master::get_inputs` takes ownership of the receiver `self`, which moves `*self`
[INFO] [stdout]   --> game/master.rs:48:24
[INFO] [stdout]    |
[INFO] [stdout] 48 |     fn get_inputs (mut self) {
[INFO] [stdout]    |                        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0507]: cannot move out of `*self` which is behind a shared reference
[INFO] [stdout]   --> game/master.rs:21:13
[INFO] [stdout]    |
[INFO] [stdout] 21 |             self.do_updates();
[INFO] [stdout]    |             ^^^^^------------
[INFO] [stdout]    |             |    |
[INFO] [stdout]    |             |    `*self` moved due to this method call
[INFO] [stdout]    |             move occurs because `*self` has type `Master`, which does not implement the `Copy` trait
[INFO] [stdout]    |
[INFO] [stdout] note: `Master::do_updates` takes ownership of the receiver `self`, which moves `*self`
[INFO] [stdout]   --> game/master.rs:58:24
[INFO] [stdout]    |
[INFO] [stdout] 58 |     fn do_updates (mut self) {
[INFO] [stdout]    |                        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0507]: cannot move out of `*self` which is behind a shared reference
[INFO] [stdout]   --> game/master.rs:20:13
[INFO] [stdout]    |
[INFO] [stdout] 20 |             self.get_inputs();
[INFO] [stdout]    |             ^^^^^------------
[INFO] [stdout]    |             |    |
[INFO] [stdout]    |             |    `*self` moved due to this method call
[INFO] [stdout]    |             move occurs because `*self` has type `Master`, which does not implement the `Copy` trait
[INFO] [stdout]    |
[INFO] [stdout] note: `Master::get_inputs` takes ownership of the receiver `self`, which moves `*self`
[INFO] [stdout]   --> game/master.rs:48:24
[INFO] [stdout]    |
[INFO] [stdout] 48 |     fn get_inputs (mut self) {
[INFO] [stdout]    |                        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0507]: cannot move out of `*self` which is behind a shared reference
[INFO] [stdout]   --> game/master.rs:21:13
[INFO] [stdout]    |
[INFO] [stdout] 21 |             self.do_updates();
[INFO] [stdout]    |             ^^^^^------------
[INFO] [stdout]    |             |    |
[INFO] [stdout]    |             |    `*self` moved due to this method call
[INFO] [stdout]    |             move occurs because `*self` has type `Master`, which does not implement the `Copy` trait
[INFO] [stdout]    |
[INFO] [stdout] note: `Master::do_updates` takes ownership of the receiver `self`, which moves `*self`
[INFO] [stdout]   --> game/master.rs:58:24
[INFO] [stdout]    |
[INFO] [stdout] 58 |     fn do_updates (mut self) {
[INFO] [stdout]    |                        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0382]: use of moved value: `new_player`
[INFO] [stdout]   --> game/master.rs:35:13
[INFO] [stdout]    |
[INFO] [stdout] 31 |             let new_player = Player{player_move:Move{guess:String::from("")}, name:String::from("")};
[INFO] [stdout]    |                 ---------- move occurs because `new_player` has type `Player`, which does not implement the `Copy` trait
[INFO] [stdout] 32 |             new_player.set_name(&name);
[INFO] [stdout]    |                        --------------- `new_player` moved due to this method call
[INFO] [stdout] ...
[INFO] [stdout] 35 |             new_player.set_move(&move_object);
[INFO] [stdout]    |             ^^^^^^^^^^ value used here after move
[INFO] [stdout]    |
[INFO] [stdout] note: `Player::set_name` takes ownership of the receiver `self`, which moves `new_player`
[INFO] [stdout]   --> game/player.rs:25:26
[INFO] [stdout]    |
[INFO] [stdout] 25 |     pub fn set_name (mut self, new_name: &String) {
[INFO] [stdout]    |                          ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0382]: borrow of moved value: `move_object`
[INFO] [stdout]   --> game/master.rs:35:33
[INFO] [stdout]    |
[INFO] [stdout] 33 |             let move_object = Move{guess:String::from("")};
[INFO] [stdout]    |                 ----------- move occurs because `move_object` has type `Move`, which does not implement the `Copy` trait
[INFO] [stdout] 34 |             move_object.set_guess(&String::from("----"));
[INFO] [stdout]    |             ----------- value moved here
[INFO] [stdout] 35 |             new_player.set_move(&move_object);
[INFO] [stdout]    |                                 ^^^^^^^^^^^^ value borrowed here after move
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0507]: cannot move out of `self.roster` which is behind a shared reference
[INFO] [stdout]   --> game/master.rs:38:13
[INFO] [stdout]    |
[INFO] [stdout] 38 |             self.roster.add_player(new_player);
[INFO] [stdout]    |             ^^^^^^^^^^^ ---------------------- `self.roster` moved due to this method call
[INFO] [stdout]    |             |
[INFO] [stdout]    |             move occurs because `self.roster` has type `Roster`, which does not implement the `Copy` trait
[INFO] [stdout]    |
[INFO] [stdout] note: `Roster::add_player` takes ownership of the receiver `self`, which moves `self.roster`
[INFO] [stdout]   --> game/roster.rs:9:28
[INFO] [stdout]    |
[INFO] [stdout] 9  |     pub fn add_player (mut self, player: Player) {
[INFO] [stdout]    |                            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0382]: use of moved value: `new_player`
[INFO] [stdout]   --> game/master.rs:38:36
[INFO] [stdout]    |
[INFO] [stdout] 31 |             let new_player = Player{player_move:Move{guess:String::from("")}, name:String::from("")};
[INFO] [stdout]    |                 ---------- move occurs because `new_player` has type `Player`, which does not implement the `Copy` trait
[INFO] [stdout] ...
[INFO] [stdout] 35 |             new_player.set_move(&move_object);
[INFO] [stdout]    |                        ---------------------- `new_player` moved due to this method call
[INFO] [stdout] ...
[INFO] [stdout] 38 |             self.roster.add_player(new_player);
[INFO] [stdout]    |                                    ^^^^^^^^^^ value used here after move
[INFO] [stdout]    |
[INFO] [stdout] note: `Player::set_move` takes ownership of the receiver `self`, which moves `new_player`
[INFO] [stdout]   --> game/player.rs:19:26
[INFO] [stdout]    |
[INFO] [stdout] 19 |     pub fn set_move (mut self, new_move: &Move) {
[INFO] [stdout]    |                          ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0382]: use of moved value: `new_player`
[INFO] [stdout]   --> game/master.rs:35:13
[INFO] [stdout]    |
[INFO] [stdout] 31 |             let new_player = Player{player_move:Move{guess:String::from("")}, name:String::from("")};
[INFO] [stdout]    |                 ---------- move occurs because `new_player` has type `Player`, which does not implement the `Copy` trait
[INFO] [stdout] 32 |             new_player.set_name(&name);
[INFO] [stdout]    |                        --------------- `new_player` moved due to this method call
[INFO] [stdout] ...
[INFO] [stdout] 35 |             new_player.set_move(&move_object);
[INFO] [stdout]    |             ^^^^^^^^^^ value used here after move
[INFO] [stdout]    |
[INFO] [stdout] note: `Player::set_name` takes ownership of the receiver `self`, which moves `new_player`
[INFO] [stdout]   --> game/player.rs:25:26
[INFO] [stdout]    |
[INFO] [stdout] 25 |     pub fn set_name (mut self, new_name: &String) {
[INFO] [stdout]    |                          ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0382]: borrow of moved value: `move_object`
[INFO] [stdout]   --> game/master.rs:35:33
[INFO] [stdout]    |
[INFO] [stdout] 33 |             let move_object = Move{guess:String::from("")};
[INFO] [stdout]    |                 ----------- move occurs because `move_object` has type `Move`, which does not implement the `Copy` trait
[INFO] [stdout] 34 |             move_object.set_guess(&String::from("----"));
[INFO] [stdout]    |             ----------- value moved here
[INFO] [stdout] 35 |             new_player.set_move(&move_object);
[INFO] [stdout]    |                                 ^^^^^^^^^^^^ value borrowed here after move
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0507]: cannot move out of `self.roster` which is behind a shared reference
[INFO] [stdout]   --> game/master.rs:38:13
[INFO] [stdout]    |
[INFO] [stdout] 38 |             self.roster.add_player(new_player);
[INFO] [stdout]    |             ^^^^^^^^^^^ ---------------------- `self.roster` moved due to this method call
[INFO] [stdout]    |             |
[INFO] [stdout]    |             move occurs because `self.roster` has type `Roster`, which does not implement the `Copy` trait
[INFO] [stdout]    |
[INFO] [stdout] note: `Roster::add_player` takes ownership of the receiver `self`, which moves `self.roster`
[INFO] [stdout]   --> game/roster.rs:9:28
[INFO] [stdout]    |
[INFO] [stdout] 9  |     pub fn add_player (mut self, player: Player) {
[INFO] [stdout]    |                            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0382]: use of moved value: `new_player`
[INFO] [stdout]   --> game/master.rs:38:36
[INFO] [stdout]    |
[INFO] [stdout] 31 |             let new_player = Player{player_move:Move{guess:String::from("")}, name:String::from("")};
[INFO] [stdout]    |                 ---------- move occurs because `new_player` has type `Player`, which does not implement the `Copy` trait
[INFO] [stdout] ...
[INFO] [stdout] 35 |             new_player.set_move(&move_object);
[INFO] [stdout]    |                        ---------------------- `new_player` moved due to this method call
[INFO] [stdout] ...
[INFO] [stdout] 38 |             self.roster.add_player(new_player);
[INFO] [stdout]    |                                    ^^^^^^^^^^ value used here after move
[INFO] [stdout]    |
[INFO] [stdout] note: `Player::set_move` takes ownership of the receiver `self`, which moves `new_player`
[INFO] [stdout]   --> game/player.rs:19:26
[INFO] [stdout]    |
[INFO] [stdout] 19 |     pub fn set_move (mut self, new_move: &Move) {
[INFO] [stdout]    |                          ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0507]: cannot move out of `*current_player` which is behind a shared reference
[INFO] [stdout]   --> game/master.rs:66:9
[INFO] [stdout]    |
[INFO] [stdout] 66 |         current_player.set_move(&move_object);
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^----------------------
[INFO] [stdout]    |         |              |
[INFO] [stdout]    |         |              `*current_player` moved due to this method call
[INFO] [stdout]    |         move occurs because `*current_player` has type `Player`, which does not implement the `Copy` trait
[INFO] [stdout]    |
[INFO] [stdout] note: `Player::set_move` takes ownership of the receiver `self`, which moves `*current_player`
[INFO] [stdout]   --> game/player.rs:19:26
[INFO] [stdout]    |
[INFO] [stdout] 19 |     pub fn set_move (mut self, new_move: &Move) {
[INFO] [stdout]    |                          ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0382]: borrow of moved value: `move_object`
[INFO] [stdout]   --> game/master.rs:66:33
[INFO] [stdout]    |
[INFO] [stdout] 64 |         let move_object = Move{guess:String::from("")};
[INFO] [stdout]    |             ----------- move occurs because `move_object` has type `Move`, which does not implement the `Copy` trait
[INFO] [stdout] 65 |         move_object.set_guess(&self.last_guess);
[INFO] [stdout]    |                     --------------------------- `move_object` moved due to this method call
[INFO] [stdout] 66 |         current_player.set_move(&move_object);
[INFO] [stdout]    |                                 ^^^^^^^^^^^^ value borrowed here after move
[INFO] [stdout]    |
[INFO] [stdout] note: `Move::set_guess` takes ownership of the receiver `self`, which moves `move_object`
[INFO] [stdout]   --> game/move.rs:13:27
[INFO] [stdout]    |
[INFO] [stdout] 13 |     pub fn set_guess (mut self, input: &String) {
[INFO] [stdout]    |                           ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0382]: borrow of moved value: `self.board`
[INFO] [stdout]   --> game/master.rs:70:12
[INFO] [stdout]    |
[INFO] [stdout] 67 |         self.board.apply(&move_object, self.roster.get_current_index());
[INFO] [stdout]    |         ---------- value moved here
[INFO] [stdout] ...
[INFO] [stdout] 70 |         if self.board.check_win() == true {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^ value borrowed here after move
[INFO] [stdout]    |
[INFO] [stdout]    = note: move occurs because `self.board` has type `Board`, which does not implement the `Copy` trait
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0507]: cannot move out of `*current_player` which is behind a shared reference
[INFO] [stdout]   --> game/master.rs:66:9
[INFO] [stdout]    |
[INFO] [stdout] 66 |         current_player.set_move(&move_object);
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^----------------------
[INFO] [stdout]    |         |              |
[INFO] [stdout]    |         |              `*current_player` moved due to this method call
[INFO] [stdout]    |         move occurs because `*current_player` has type `Player`, which does not implement the `Copy` trait
[INFO] [stdout]    |
[INFO] [stdout] note: `Player::set_move` takes ownership of the receiver `self`, which moves `*current_player`
[INFO] [stdout]   --> game/player.rs:19:26
[INFO] [stdout]    |
[INFO] [stdout] 19 |     pub fn set_move (mut self, new_move: &Move) {
[INFO] [stdout]    |                          ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0382]: borrow of moved value: `move_object`
[INFO] [stdout]   --> game/master.rs:66:33
[INFO] [stdout]    |
[INFO] [stdout] 64 |         let move_object = Move{guess:String::from("")};
[INFO] [stdout]    |             ----------- move occurs because `move_object` has type `Move`, which does not implement the `Copy` trait
[INFO] [stdout] 65 |         move_object.set_guess(&self.last_guess);
[INFO] [stdout]    |                     --------------------------- `move_object` moved due to this method call
[INFO] [stdout] 66 |         current_player.set_move(&move_object);
[INFO] [stdout]    |                                 ^^^^^^^^^^^^ value borrowed here after move
[INFO] [stdout]    |
[INFO] [stdout] note: `Move::set_guess` takes ownership of the receiver `self`, which moves `move_object`
[INFO] [stdout]   --> game/move.rs:13:27
[INFO] [stdout]    |
[INFO] [stdout] 13 |     pub fn set_guess (mut self, input: &String) {
[INFO] [stdout]    |                           ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0382]: borrow of moved value: `self.board`
[INFO] [stdout]   --> game/master.rs:70:12
[INFO] [stdout]    |
[INFO] [stdout] 67 |         self.board.apply(&move_object, self.roster.get_current_index());
[INFO] [stdout]    |         ---------- value moved here
[INFO] [stdout] ...
[INFO] [stdout] 70 |         if self.board.check_win() == true {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^ value borrowed here after move
[INFO] [stdout]    |
[INFO] [stdout]    = note: move occurs because `self.board` has type `Board`, which does not implement the `Copy` trait
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0382]: borrow of moved value: `self.guess`
[INFO] [stdout]   --> game/board.rs:26:20
[INFO] [stdout]    |
[INFO] [stdout] 22 |             self.player_1_status[0] = self.guess;
[INFO] [stdout]    |                                       ---------- value moved here
[INFO] [stdout] ...
[INFO] [stdout] 26 |                 if self.guess.chars().nth(i).unwrap() == self.code.chars().nth(i).unwrap() {
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^^^^^ value borrowed here after move
[INFO] [stdout]    |
[INFO] [stdout]    = note: move occurs because `self.guess` has type `String`, which does not implement the `Copy` trait
[INFO] [stdout]    = note: borrow occurs due to deref coercion to `str`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0382]: borrow of moved value: `self.guess`
[INFO] [stdout]   --> game/board.rs:40:20
[INFO] [stdout]    |
[INFO] [stdout] 36 |             self.player_2_status[0] = self.guess;
[INFO] [stdout]    |                                       ---------- value moved here
[INFO] [stdout] ...
[INFO] [stdout] 40 |                 if self.guess.chars().nth(i).unwrap() == self.code.chars().nth(i).unwrap() {
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^^^^^ value borrowed here after move
[INFO] [stdout]    |
[INFO] [stdout]    = note: move occurs because `self.guess` has type `String`, which does not implement the `Copy` trait
[INFO] [stdout]    = note: borrow occurs due to deref coercion to `str`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0382]: borrow of moved value: `self.guess`
[INFO] [stdout]   --> game/board.rs:26:20
[INFO] [stdout]    |
[INFO] [stdout] 22 |             self.player_1_status[0] = self.guess;
[INFO] [stdout]    |                                       ---------- value moved here
[INFO] [stdout] ...
[INFO] [stdout] 26 |                 if self.guess.chars().nth(i).unwrap() == self.code.chars().nth(i).unwrap() {
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^^^^^ value borrowed here after move
[INFO] [stdout]    |
[INFO] [stdout]    = note: move occurs because `self.guess` has type `String`, which does not implement the `Copy` trait
[INFO] [stdout]    = note: borrow occurs due to deref coercion to `str`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0382]: borrow of moved value: `self.guess`
[INFO] [stdout]   --> game/board.rs:40:20
[INFO] [stdout]    |
[INFO] [stdout] 36 |             self.player_2_status[0] = self.guess;
[INFO] [stdout]    |                                       ---------- value moved here
[INFO] [stdout] ...
[INFO] [stdout] 40 |                 if self.guess.chars().nth(i).unwrap() == self.code.chars().nth(i).unwrap() {
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^^^^^ value borrowed here after move
[INFO] [stdout]    |
[INFO] [stdout]    = note: move occurs because `self.guess` has type `String`, which does not implement the `Copy` trait
[INFO] [stdout]    = note: borrow occurs due to deref coercion to `str`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0507]: cannot move out of `*set_new_move` which is behind a shared reference
[INFO] [stdout]   --> game/player.rs:22:28
[INFO] [stdout]    |
[INFO] [stdout] 22 |         self.player_move = *set_new_move;
[INFO] [stdout]    |                            ^^^^^^^^^^^^^ move occurs because `*set_new_move` has type `Move`, which does not implement the `Copy` trait
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0507]: cannot move out of `*set_new_move` which is behind a shared reference
[INFO] [stdout]   --> game/player.rs:22:28
[INFO] [stdout]    |
[INFO] [stdout] 22 |         self.player_move = *set_new_move;
[INFO] [stdout]    |                            ^^^^^^^^^^^^^ move occurs because `*set_new_move` has type `Move`, which does not implement the `Copy` trait
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 12 previous errors
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0382, E0507.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0382`.
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 12 previous errors
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0382, E0507.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0382`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `Mastermind_Rust` (bin "Mastermind_Rust" test) due to 13 previous errors
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stderr] error: could not compile `Mastermind_Rust` (bin "Mastermind_Rust") due to 13 previous errors
[INFO] running `Command { std: "docker" "inspect" "230cce4767f00ad0a8dd5c87d1a3c938ee832b744859fdc700980d1c16d6955c", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "230cce4767f00ad0a8dd5c87d1a3c938ee832b744859fdc700980d1c16d6955c", kill_on_drop: false }`
[INFO] [stdout] 230cce4767f00ad0a8dd5c87d1a3c938ee832b744859fdc700980d1c16d6955c
